package cn.siriusbot.siriuspro.bot.api;

import cn.siriusbot.siriuspro.bot.api.pojo.message.Message;
import cn.siriusbot.siriuspro.bot.api.pojo.message.MessageKeyboard;
import cn.siriusbot.siriuspro.bot.api.pojo.message.MessageMarkdown;
import cn.siriusbot.siriuspro.bot.api.pojo.message.ark.MessageArk;
import cn.siriusbot.siriuspro.bot.api.pojo.qq.GeneralMessageResult;
import cn.siriusbot.siriuspro.bot.api.tuple.Tuple;
import lombok.NonNull;

public interface GroupApi {

    /**
     * 通用发送消息
     *
     * @param content  要发送的消息内容
     * @param bot_id   传入机器人ID
     * @param group_id 群ID
     * @param msg_type 消息类型： 0 文本，2 是 markdown，3 ark 消息，4 embed，7 media 富媒体
     * @param markdown markdown对象
     * @param keyboard 按钮对象
     * @param media    {file_info: \"\"} 数据来源\"消息收发=>富媒体消息\"
     * @param ark      ark消息对象
     * @param image    【暂不支持】图片
     * @param message_reference 【暂未支持】消息引用
     * @param event_id 事件ID
     * @param msg_id   消息ID
     * @param msg_seq  回复消息的序号，与 msg_id 联合使用，避免相同消息id回复重复发送，不填默认是 1。相同的 msg_id + msg_seq 重复发送会失败。
     * @return 消息对象
     */
    Tuple<GeneralMessageResult, String> sendGeneralMessage
    (
           String bot_id,

            String group_id,

            String content,

            Integer msg_type,

            MessageMarkdown markdown,

            MessageKeyboard keyboard,

            String media,

            MessageArk ark,

            String image,

            String message_reference,

            String event_id,

            String msg_id,

            String msg_seq
    );

    /**
     * 用于向 QQ群发送消息
     *
     * @param bot_id   传入机器人ID
     * @param group_id 群ID
     * @param content  要发送的消息内容
     * @param msg_id   消息ID
     * @return 消息对象
     */
    Tuple<Message, String> sendMessage
    (

            String bot_id,

            String group_id,

            String content,

            String msg_id
    );


    /**
     * 用于发送QQ群发送富文本消息
     *
     * @param bot_id       机器人ID
     * @param group_id     群ID
     * @param content      消息内容
     * @param event_id     事件ID
     * @param file_type    文件类型 业务类型，图片，文件，语音，视频 文件类型，取值:1图片,2视频,3语音(目前语音只支持silk格式)
     * @param url          文件地址
     * @param srv_send_msg 服务器消息
     * @return 消息对象
     */
    Tuple<Message, String> sendRichMediaMessage
    (
            String bot_id,

            String group_id,

            String content,

            String event_id,

            Integer file_type,

            String url,

            Boolean srv_send_msg
    );

    /**
     * 发送markdown消息(富文本)
     *
     * @param bot_id   传入机器人ID
     * @param group_id 群ID
     * @param msg_id   消息id
     * @param event_id 事件ID
     * @param markdown markdown对象
     * @param keyboard 按钮对象
     * @return 返回消息对象
     */
    Tuple<Message, String> sendMarkdownMessage
    (
            String bot_id,

            String group_id,

            String msg_id,

            String event_id,

            MessageMarkdown markdown,

            MessageKeyboard keyboard
    );

}
